<template><div><h2 id="贡献导引" tabindex="-1"><a class="header-anchor" href="#贡献导引"><span>贡献导引</span></a></h2>
<p>Laravel 6 中文文档 /</p>
<p>本文档最新版为 <a href="https://learnku.com/docs/laravel/10.x" target="_blank" rel="noopener noreferrer">10.x</a>，旧版本可能放弃维护，推荐阅读最新版！</p>
<h2 id="贡献导引-1" tabindex="-1"><a class="header-anchor" href="#贡献导引-1"><span>贡献导引</span></a></h2>
<ul>
<li><a href="#bug-reports">Bug 报告</a></li>
<li><a href="#core-development-discussion">核心开发讨论</a></li>
<li><a href="#which-branch">选择哪个分支？</a></li>
<li><a href="#compiled-assets">编译资源</a></li>
<li><a href="#security-vulnerabilities">安全漏洞</a></li>
<li><a href="#coding-style">代码风格</a>
<ul>
<li><a href="#phpdoc">PHPDoc</a></li>
<li><a href="#styleci">StyleCI</a></li>
</ul>
</li>
</ul>
<h2 id="bug-报告" tabindex="-1"><a class="header-anchor" href="#bug-报告"><span>Bug 报告</span></a></h2>
<p>为了鼓励积极协作，Laravel 官方强烈鼓励你拉取请求，而不仅仅是提交 Bug 报告。「Bug 报告」也可以以包含失败测试的拉取请求的形式发送。</p>
<p>然而，如果你提交了一个 bug 报告，你的议题（issue）应该包括关于这个议题一个标题和一个清晰的描述。你还应该包含尽可能多的相关信息以及演示该议题的代码示例。Bug 报告的目的就是让你自己和他人能够轻松地复现 bug 并修复它。</p>
<p>谨记，bug 报告的创建是希望和你有同样问题的他人能够与你协作解决问题，不要指望 bug 报告能够自动查看任何活动或者其他人跳转自此来修复它。创建 bug 报告有助于帮助自己和其他人开始着手解决问题。</p>
<p>Laravel 源码托管在 GitHub 上，每个项目都有一些仓库：</p>
<h2 id="核心开发讨论" tabindex="-1"><a class="header-anchor" href="#核心开发讨论"><span>核心开发讨论</span></a></h2>
<p>你可以在 Laravel 创意 <a href="https://github.com/laravel/ideas/issues" target="_blank" rel="noopener noreferrer">议题板</a> 中针对现有的 Laravel 行为提出新的功能或改进。如果你提出了一个新功能，我们希望你会乐于实现一些至少能够完成该功能所需的必要代码。</p>
<p>有关 bugs、新特性还有现存特性的实现的讨论在 <a href="https://discordapp.com/invite/mPZNm7A" target="_blank" rel="noopener noreferrer">Laravel Discord server</a> 的 <code v-pre>#internals</code> 频道进行。Laravel 的维护者 Taylor Otwell 通常在工作日的上午 8 点到下午 5 点（UTC-06:00 或 America/Chicago）出现在该频道中，并在其他时间偶尔出现在该频道中。</p>
<h2 id="选择哪个分支" tabindex="-1"><a class="header-anchor" href="#选择哪个分支"><span>选择哪个分支？</span></a></h2>
<p><strong>所有</strong> bug 修复都应该发送到最新的稳定分支或 <a href="https://learnku.com/docs/laravel/6.x/contributions/Prologue/Release-Notes?id=%E6%94%AF%E6%8C%81%E6%96%B9%E9%92%88" target="_blank" rel="noopener noreferrer">当前的 LTS 分支</a>。除非修复了仅在即将发布的版本中存在的功能，否则永远不应将 bug 修复发送到 <code v-pre>master</code> 分支。</p>
<p><strong>完全向后兼容</strong>当前版本的<strong>次要</strong>功能可以发送到最新的稳定分支。</p>
<p>应始终将<strong>重要</strong>的新功能发送到主分支，其中包含即将发布的版本。</p>
<p>如果你不确定你的功能是重大功能还是次要功能，你可以在 <a href="https://discordapp.com/invite/mPZNm7A" target="_blank" rel="noopener noreferrer">Laravel Discord server</a> 的 <code v-pre>#internals</code> 频道询问 Taylor Otwell。</p>
<h2 id="编译资源" tabindex="-1"><a class="header-anchor" href="#编译资源"><span>编译资源</span></a></h2>
<p>如果要提交的更改会影响已编译的文件，例如在 <code v-pre>laravel/laravel</code> 仓库中 <code v-pre>resources/sass</code> 或者 <code v-pre>resources/js</code> 目录下的大部分文件，请不要提交已编译的文件。由于这类文件尺寸过大，维护者审查他们不太实际。这会被利用来作为往 Laravel 里注入恶意代码的一种方式。为了预防性地阻止这种情况发生，Laravel 的维护者将生成并提交所有编译文件。</p>
<h2 id="安全漏洞" tabindex="-1"><a class="header-anchor" href="#安全漏洞"><span>安全漏洞</span></a></h2>
<p>如果你发现 Laravel 中存在安全漏洞，请发送电子邮件至 Taylor Otwell，电子邮件地址为 <a href="mailto:taylor@laravel.com" target="_blank" rel="noopener noreferrer">taylor@laravel.com</a>，所有安全漏洞都将得到及时解决。</p>
<h2 id="编码风格" tabindex="-1"><a class="header-anchor" href="#编码风格"><span>编码风格</span></a></h2>
<p>Laravel 遵循 <a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md" target="_blank" rel="noopener noreferrer">PSR-2</a> 编码规范和 <a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md" target="_blank" rel="noopener noreferrer">PSR-4</a> 自动加载规范。</p>
<h3 id="phpdoc" tabindex="-1"><a class="header-anchor" href="#phpdoc"><span>PHPDoc</span></a></h3>
<p>以下是正确写法的 Laravel 文档注释。请注意，<code v-pre>@param</code> 属性后跟两个空格、参数类型、两个空格，最后是变量名称：</p>
<div class="language-php line-numbers-mode" data-highlighter="prismjs" data-ext="php" data-title="php"><pre v-pre class="language-php"><code><span class="line"><span class="token doc-comment comment">/**</span>
<span class="line"> * 在容器中注册绑定。</span>
<span class="line"> *</span>
<span class="line"> * <span class="token keyword">@param</span>  <span class="token class-name"><span class="token keyword">string</span><span class="token punctuation">|</span><span class="token keyword">array</span></span>  <span class="token parameter">$abstract</span></span>
<span class="line"> * <span class="token keyword">@param</span>  <span class="token class-name"><span class="token punctuation">\</span>Closure<span class="token punctuation">|</span><span class="token keyword">string</span><span class="token punctuation">|</span><span class="token keyword">null</span></span>  <span class="token parameter">$concrete</span></span>
<span class="line"> * <span class="token keyword">@param</span>  <span class="token class-name"><span class="token keyword">bool</span></span>  <span class="token parameter">$shared</span></span>
<span class="line"> * <span class="token keyword">@return</span> <span class="token class-name"><span class="token keyword">void</span></span></span>
<span class="line"> *</span>
<span class="line"> * <span class="token keyword">@throws</span> <span class="token class-name"><span class="token punctuation">\</span>Exception</span></span>
<span class="line"> */</span></span>
<span class="line"><span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function-definition function">bind</span><span class="token punctuation">(</span><span class="token variable">$abstract</span><span class="token punctuation">,</span> <span class="token variable">$concrete</span> <span class="token operator">=</span> <span class="token constant">null</span><span class="token punctuation">,</span> <span class="token variable">$shared</span> <span class="token operator">=</span> <span class="token constant boolean">false</span><span class="token punctuation">)</span></span>
<span class="line"><span class="token punctuation">{</span></span>
<span class="line">    <span class="token comment">//</span></span>
<span class="line"><span class="token punctuation">}</span></span>
<span class="line"></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="styleci" tabindex="-1"><a class="header-anchor" href="#styleci"><span>StyleCI</span></a></h3>
<p>别担心你的代码风格不够漂亮！在合并拉取请求后， <a href="https://styleci.io/" target="_blank" rel="noopener noreferrer">StyleCI</a> 将会自动把所有样式进行修正，再合并到 Laravel 存储库中。这使得我们更多的关注贡献的内容而不是代码风格。</p>
<blockquote>
<p>本译文仅用于学习和交流目的，转载请务必注明文章译者、出处、和本文链接<br>
我们的翻译工作遵照 <a href="https://learnku.com/docs/guide/cc4.0/6589" target="_blank" rel="noopener noreferrer">CC 协议</a>，如果我们的工作有侵犯到您的权益，请及时联系我们。</p>
</blockquote>
<hr>
<blockquote>
<p>原文地址：<a href="https://learnku.com/docs/laravel/6.x/contributions/5123" target="_blank" rel="noopener noreferrer">https://learnku.com/docs/laravel/6.x/con...</a></p>
<p>译文地址：<a href="https://learnku.com/docs/laravel/6.x/contributions/5123" target="_blank" rel="noopener noreferrer">https://learnku.com/docs/laravel/6.x/con...</a></p>
</blockquote>
</div></template>


